SQL Stored Procedures for SQL Server

पुन: प्रयोज्य SQL कोड को संग्रहीत करने वाली संग्रहीत कार्यविधियाँ सीखें

संग्रहित प्रक्रिया क्या है?

एक संग्रहीत प्रक्रिया SQL कोड तैयार किया जाता है जिसे आप स्टोर कर सकते हैं ताकि कोड को बार-बार उपयोग किया जा सके।

इसलिए यदि आपके पास कोई SQL क्वेरी है जिसे आप बार-बार लिखते हैं, तो इसे एक संग्रहीत प्रक्रिया के रूप में सहेजें और इसे चलाने के लिए कॉल करें।

आप संग्रहीत प्रक्रिया में पैरामीटर पास कर सकते हैं ताकि संग्रहीत प्रक्रिया पारित पैरामीटर के मान के आधार पर निष्पादित हो सके।

संग्रहित प्रक्रियाओं के लाभ

पुन: उपयोग

कोड को बार-बार लिखने की जरूरत नहीं है, इसे बार-बार दोबारा इस्तेमाल किया जा सकता है

प्रदर्शन

पूर्व-संकलित कोड तेजी से चलता है

सुरक्षा

सीधी टेबल पहुंच को अवरुद्ध किया जा सकता है

नेटवर्क प्रदर्शन

कम नेटवर्क ट्रैफ़िक

संग्रहित प्रक्रिया सिंटैक्स

बनाना

CREATE PROCEDURE procedure_name
AS
sql_statement
GO;

रास्ते पर लानेवाला

EXEC procedure_name;

प्रदर्शन डेटाबेस

नीचे नॉर्थविंड नमूना डेटाबेस में "ग्राहक" तालिका से एक चयन है:

CustomerID CustomerName ContactName City PostalCode Country
1 Alfreds Futterkiste Maria Anders Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Luleå S-958 22 Sweden

संग्रहित प्रक्रियाओं के उदाहरण

एक बुनियादी उदाहरण

निम्नलिखित SQL कथन "SelectAllCustomers" नामक एक संग्रहीत प्रक्रिया बनाता है जो "ग्राहक" तालिका से सभी रिकॉर्ड का चयन करता है:

बनाना

CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;

रास्ते पर लानेवाला

EXEC SelectAllCustomers;

एक पैरामीटर के साथ एक संग्रहीत प्रक्रिया

निम्नलिखित SQL कथन एक संग्रहीत प्रक्रिया बनाता है जो "ग्राहक" तालिका से एक विशिष्ट शहर के ग्राहकों का चयन करता है:

बनाना

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;

रास्ते पर लानेवाला

EXEC SelectAllCustomers @City = 'London';

एकाधिक मापदंडों के साथ एक संग्रहीत प्रक्रिया

कई पैरामीटर सेट करना बहुत आसान है. प्रत्येक पैरामीटर और डेटा प्रकार को अल्पविराम से अलग करके सूचीबद्ध करें।

बनाना

CREATE PROCEDURE SelectAllCustomers 
    @City nvarchar(30), 
    @PostalCode nvarchar(10)
AS
SELECT * FROM Customers 
WHERE City = @City 
    AND PostalCode = @PostalCode
GO;

रास्ते पर लानेवाला

EXEC SelectAllCustomers 
    @City = 'London', 
    @PostalCode = 'WA1 1DP';

💡सहायता नोट:

संग्रहीत प्रक्रियाएँ जटिल व्यावसायिक तर्क को संग्रहित करने, प्रदर्शन में सुधार करने और सुरक्षा में सुधार करने में मदद करती हैं। वे डेटाबेस लॉजिक को एप्लिकेशन कोड से अलग करते हैं।

व्यावहारिक उदाहरण

नए ग्राहक जोड़ना

सत्यापन के साथ नए ग्राहक जोड़ने की प्रक्रिया

CREATE PROCEDURE AddCustomer
    @Name nvarchar(50),
    @Email nvarchar(100)
AS
BEGIN
    IF NOT EXISTS(SELECT 1 FROM Customers WHERE Email = @Email)
    INSERT INTO Customers (Name, Email) VALUES (@Name, @Email)
END

विक्रय विवरण

किसी विशिष्ट अवधि के लिए बिक्री डेटा प्राप्त करें

CREATE PROCEDURE GetSalesReport
    @StartDate date,
    @EndDate date
AS
SELECT * FROM Orders 
WHERE OrderDate BETWEEN @StartDate AND @EndDate

डेटा रखरखाव

बैकअप लें और पुराने रिकॉर्ड हटा दें

CREATE PROCEDURE ArchiveOldOrders
    @ArchiveDate date
AS
BEGIN
    INSERT INTO OrderArchive SELECT * FROM Orders 
    WHERE OrderDate < @ArchiveDate
    DELETE FROM Orders WHERE OrderDate < @ArchiveDate
END

अभ्यास

SQL सर्वर में संग्रहीत प्रक्रिया का प्राथमिक उद्देश्य क्या है?

डेटाबेस में अनुक्रमण को बेहतर बनाने के लिए
✗ ग़लत! इंडेक्सिंग एक अलग ऑपरेशन है
पुन: प्रयोज्य SQL कोड को संग्रहीत करने के लिए जिसे बार-बार पुन: उपयोग किया जा सकता है
✓ ठीक है! संग्रहीत प्रक्रियाओं का प्राथमिक उद्देश्य पुन: प्रयोज्य SQL कोड को संग्रहीत और पुन: उपयोग करना है
स्वचालित रूप से तालिकाएँ बनाने के लिए
✗ ग़लत! तालिकाएँ CREATE TABLE कथन के साथ बनाई जाती हैं
प्रश्नों में NULL मानों को संभालने के लिए
✗ ग़लत! NULL मानों को ISNULL() या COALESCE() जैसे फ़ंक्शंस द्वारा नियंत्रित किया जाता है